Multi-part Request কি এবং কিভাবে কাজ করে

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) Multi-part/Form Data Request পাঠানো |
151
151

Multi-part Request একটি HTTP অনুরোধের ধরন, যা বিশেষ করে ফাইল আপলোড বা বিভিন্ন ধরনের ডেটা একসঙ্গে সার্ভারে পাঠানোর জন্য ব্যবহৃত হয়। সাধারণত, এই ধরনের অনুরোধে Content-Type: multipart/form-data হেডার থাকে, যা সার্ভারকে জানায় যে অনুরোধের মধ্যে একাধিক অংশ রয়েছে, যেমন ফাইল, টেক্সট ডেটা বা অন্যান্য ফর্ম ফিল্ড।

Apache HTTP Client-এ Multi-part Request পাঠানোর জন্য আমরা HttpPost এবং MultipartEntityBuilder ব্যবহার করে একটি অনুরোধ তৈরি করতে পারি। এই অনুরোধের মধ্যে আমরা একাধিক ফর্ম ডেটা বা ফাইল পাঠাতে পারি।

Multi-part Request এর কাজের ধরন

Multi-part request সাধারণত ফর্ম ডেটা বা ফাইল আপলোড করার জন্য ব্যবহৃত হয়। প্রতিটি অংশের মধ্যে আলাদা আলাদা Content-Disposition থাকে, যা পরিষ্কার করে যে কোন অংশটি ফাইল, কোন অংশটি টেক্সট ফিল্ড বা অন্য কিছু।

কোড উদাহরণ: Apache HTTP Client-এ Multi-part Request পাঠানো

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.util.EntityUtils;

import java.io.File;

public class ApacheHttpClientMultiPartRequest {
    public static void main(String[] args) {
        // HttpClient তৈরি করুন
        CloseableHttpClient httpClient = HttpClients.createDefault();

        try {
            // HttpPost তৈরি করুন
            HttpPost httpPost = new HttpPost("https://example.com/upload");

            // MultipartEntityBuilder ব্যবহার করে multipart request তৈরি করুন
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            
            // ফর্ম ডেটা যোগ করুন (String Data)
            builder.addPart("username", new StringBody("testuser"));

            // ফাইল যোগ করুন (File Upload)
            File file = new File("path/to/your/file.jpg");
            builder.addPart("file", new FileBody(file));

            // তৈরি করা MultipartEntity কে HttpPost এর মধ্যে সেট করুন
            HttpEntity multipart = builder.build();
            httpPost.setEntity(multipart);

            // POST অনুরোধ পাঠান এবং প্রতিক্রিয়া সংগ্রহ করুন
            CloseableHttpResponse response = httpClient.execute(httpPost);

            try {
                // প্রতিক্রিয়া স্ট্যাটাস কোড পড়ুন
                int statusCode = response.getStatusLine().getStatusCode();
                System.out.println("Response Status Code: " + statusCode);

                // HttpEntity থেকে ডেটা পড়ুন
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    String responseBody = EntityUtils.toString(entity);
                    System.out.println("Response Content: " + responseBody);
                }
            } finally {
                response.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // HttpClient বন্ধ করুন
                httpClient.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}

কোড ব্যাখ্যা

  1. HttpClient তৈরি করা

    CloseableHttpClient httpClient = HttpClients.createDefault();
    
    • HttpClients.createDefault() ব্যবহার করে একটি HttpClient অবজেক্ট তৈরি করা হয়েছে।
  2. HttpPost তৈরি করা

    HttpPost httpPost = new HttpPost("https://example.com/upload");
    
    • HttpPost অবজেক্ট তৈরি করা হয়েছে এবং এতে URL সেট করা হয়েছে যেখানে আমরা ফাইল এবং ফর্ম ডেটা পাঠাব।
  3. MultipartEntityBuilder ব্যবহার করা

    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    
    • MultipartEntityBuilder ব্যবহার করা হয়েছে, যা বিভিন্ন ধরনের ফর্ম ডেটা এবং ফাইল একসাথে তৈরি করতে সাহায্য করে।
  4. ফর্ম ডেটা এবং ফাইল যোগ করা

    builder.addPart("username", new StringBody("testuser"));
    File file = new File("path/to/your/file.jpg");
    builder.addPart("file", new FileBody(file));
    
    • প্রথমে একটি টেক্সট ফর্ম ডেটা (username) যোগ করা হয়েছে।
    • তারপর একটি ফাইল (file.jpg) যোগ করা হয়েছে।
  5. MultipartEntity তৈরি করা

    HttpEntity multipart = builder.build();
    httpPost.setEntity(multipart);
    
    • MultipartEntityBuilder থেকে HttpEntity তৈরি করা হয়েছে, যা HttpPost অনুরোধে সেট করা হয়েছে।
  6. POST অনুরোধ পাঠানো এবং প্রতিক্রিয়া গ্রহণ করা
    • httpClient.execute(httpPost) ব্যবহার করে GET অনুরোধ পাঠানো হয়েছে এবং প্রতিক্রিয়া (HttpResponse) প্রাপ্ত হয়েছে।
    • তারপর EntityUtils.toString() ব্যবহার করে প্রতিক্রিয়া বডি পড়া হয়েছে।

Multi-part Request এর সুবিধা

  • ফাইল আপলোড: এটি বড় ফাইল এবং একাধিক ফাইল একই সাথে সার্ভারে আপলোড করার জন্য আদর্শ।
  • ফর্ম ডেটা: ফর্ম ফিল্ড এবং অন্যান্য ডেটা একসাথে সার্ভারে পাঠানো যেতে পারে।
  • বিভিন্ন ডেটা টাইপ: একটি অনুরোধে একাধিক ডেটা টাইপ (যেমন, টেক্সট, ফাইল, ইমেজ) পাঠানো সম্ভব।

সারাংশ

Apache HTTP Client-এ Multi-part Request ব্যবহারের মাধ্যমে ফাইল এবং টেক্সট ডেটা একসাথে সার্ভারে পাঠানো সম্ভব। MultipartEntityBuilder ব্যবহার করে, একাধিক ফর্ম ফিল্ড এবং ফাইল পাঠানোর জন্য সহজেই HttpPost অনুরোধ তৈরি করা যায়। এটি সাধারণত ফাইল আপলোড এবং ফর্ম ডেটা পাঠানোর ক্ষেত্রে ব্যবহৃত হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion